package com.fansl.allround.daemon.quartz.jobs;

import com.fansl.allround.daemon.quartz.entity.ScheduleJob;
import com.fansl.allround.daemon.quartz.util.JobInvokeUtil;
import lombok.extern.slf4j.Slf4j;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import org.quartz.PersistJobDataAfterExecution;

/**
 * @author fansl
 * @Description: 定时任务处理
 * @date 2020/1/10 15:00
 */

/**
 * 持久化
 */
@PersistJobDataAfterExecution
/**
 * 禁止并发执行(Quartz不要并发地执行同一个job定义（这里指一个job类的多个实例）)
 */
@DisallowConcurrentExecution
@Slf4j
public class QuartzDisallowConcurrentExecutionJob extends AbstractQuartzJob {

    /**
     * 执行方法
     *
     * @param context     工作执行上下文对象
     * @param scheduleJob 系统计划任务
     * @throws Exception 执行过程中的异常
     */
    @Override
    protected void doExecute(JobExecutionContext context, ScheduleJob scheduleJob) throws Exception {
        JobInvokeUtil.invokeMethod(scheduleJob);
    }
}
